package com.yeyks.commonReference.service.vip;

import com.yeyks.account.dal.domain.AccountInfo;
import com.yeyks.common.ajax.AjaxResponseBody;
import com.yeyks.common.base.PageResult;
import com.yeyks.common.dto.MemberCardEnableOrderDTO;
import com.yeyks.common.dto.member.MemberCardTsOrderDTO;
import com.yeyks.common.param.MemberCardEnableOrderParam;
import com.yeyks.common.param.member.MemberCardTsOrderQueryParam;
import com.yeyks.common.result.member.MemberCardTsOrderResult;
import com.yeyks.common.result.order.MemberCardEnableOrderDownLoadResult;
import com.yeyks.vip.dal.domain.MemberCardEnableOrder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeyks.vip.param.MemberCardEnableOrderPlaceAnOrderParam;
import com.yeyks.vip.param.MiniCardWithdrawalOrderCheckParam;
import com.yeyks.vip.result.MiniCardWithdrawalOrderCheckResult;
import com.yeyks.vip.vo.MemberCardEnableOrderPlaceAnOrderVo;

import java.util.List;


/**
 * <p>
 * vip卡支付订单表 服务类
 * </p>
 *
 * @author yun
 * @since 2019-08-07
 */
public interface MemberCardEnableOrderService extends IService<MemberCardEnableOrder> {

    /**
     * v3.4.a
     * 下单
     */
    MemberCardEnableOrderPlaceAnOrderVo placeAnOrder(MemberCardEnableOrderPlaceAnOrderParam param);

    /**
     * 订单列表
     *
     * @param param
     * @return
     */
    AjaxResponseBody selectPageList(MemberCardEnableOrderParam param);

    /**
     * 订单列表
     *
     * @param param
     * @return
     */
    PageResult<MemberCardEnableOrderDTO> myList(MemberCardEnableOrderParam param);

    /**
     * 订单导出
     *
     * @param param
     * @return
     */
    List<MemberCardEnableOrderDownLoadResult> download(MemberCardEnableOrderParam param);

    /**
     * 上次提现到这次提现中订单
     *
     * @param loginUser
     * @param param
     * @return
     */
    PageResult<MiniCardWithdrawalOrderCheckResult> periodOrder(AccountInfo loginUser, MiniCardWithdrawalOrderCheckParam param);

    /**
     * 分页查询 [推手订单] 订单信息
     * @param param
     * @return
     */
    PageResult<MemberCardTsOrderDTO> queryTsPage(MemberCardTsOrderQueryParam param);

    /**
     * 查询符合条件的推手订单信息
     * @param param 查询条件
     * @return 返回结果
     */
    List<MemberCardTsOrderResult> tsDownload(MemberCardTsOrderQueryParam param);
}
